package com.iwhalecloud.bss.kite.cucc.service.attr.handler;

import com.iwhalecloud.bss.kite.common.constant.KeyConsts;
import com.iwhalecloud.bss.kite.common.util.KiteListUtils;
import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
import com.iwhalecloud.bss.kite.manager.api.IQuerySceneInstService;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttr;
import com.iwhalecloud.bss.kite.manager.inst.KiteInst;
import com.iwhalecloud.bss.kite.manager.inst.KiteOfferInst;
import com.iwhalecloud.bss.kite.manager.inst.KiteProdInst;
import com.iwhalecloud.bss.kite.service.attr.AttrData;
import com.iwhalecloud.bss.kite.service.attr.handler.AbstractAttrHandler;
import com.ztesoft.bss.common.exception.BssException;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Objects;

public class FeeStandardMonthlyRentAdditionalAttrHandler extends AbstractAttrHandler<KiteInst, AttrData> {

    @Autowired
    IQuerySceneInstService querySceneInstService;

    @Override
    public void def(KiteAttr attr, KiteInst inst, AttrData data) {
        String sceneInstId = data.getSceneInstId();
        String custId = data.getCustId();
        String dataDisk = "";
        // 获取所有的主套餐
        List<KiteOfferInst> kiteOfferInsts = querySceneInstService.listMainOfferInsts(sceneInstId);
        if (KiteListUtils.isNotEmpty(kiteOfferInsts)) {
            for (KiteOfferInst kiteOfferInst : kiteOfferInsts) {
                // 筛选附加商品的offerId
                if (KiteStringUtils.equals("10004326",kiteOfferInst.getSpecId())) {
                    // 根据销售品取接入产品
                    List<KiteProdInst> prodInstsFromOfferInstLists = querySceneInstService.listProdInstsFromOfferInst(custId, kiteOfferInst.getOfferInstId());
                    if (KiteListUtils.isNotEmpty(prodInstsFromOfferInstLists)) {
                        for (KiteProdInst prodInstsFromOfferInstList : prodInstsFromOfferInstLists) {
                            // 获取数据盘规格对象
                            KiteAttr dateDiskAttr = prodInstsFromOfferInstList.getAttr("210004438");
                            if (Objects.nonNull(dateDiskAttr)) {
                                if (KiteStringUtils.isEmpty(dateDiskAttr.getValue())) {
                                    BssException.throwOut(KeyConsts.LOG_MODULE, "", "请先选择数据盘（高效云盘）规格！");
                                }
                                dataDisk = dateDiskAttr.getValue();
                            }
                        }
                    }
                }
            }
        }
        /*数据盘规格-标准月租
        20G——3元
        30G——4.5元
        50G——7.5元
        100G——15元
        200G——30元
        300G——45元
        500G——75元
        1T——150元
        2T——300元
        3T——450元
        5T——750元*/
        // 附加产品标准月租根据规则进行联动计算
        if (KiteStringUtils.equals("100002162", dataDisk)) {
            attr.setValue("3");
            attr.setValueDesc("3");
        } else if (KiteStringUtils.equals("100002163", dataDisk)) {
            attr.setValue("4.5");
            attr.setValueDesc("4.5");
        } else if (KiteStringUtils.equals("100001391", dataDisk)) {
            attr.setValue("7.5");
            attr.setValueDesc("7.5");
        } else if (KiteStringUtils.equals("1_0000105", dataDisk)) {
            attr.setValue("15");
            attr.setValueDesc("15");
        } else if (KiteStringUtils.equals("100003789", dataDisk)) {
            attr.setValue("30");
            attr.setValueDesc("30");
        } else if (KiteStringUtils.equals("100003599", dataDisk)) {
            attr.setValue("45");
            attr.setValueDesc("45");
        } else if (KiteStringUtils.equals("100003574", dataDisk)) {
            attr.setValue("75");
            attr.setValueDesc("75");
        } else if (KiteStringUtils.equals("100005835", dataDisk)) {
            attr.setValue("150");
            attr.setValueDesc("150");
        } else if (KiteStringUtils.equals("100005836", dataDisk)) {
            attr.setValue("300");
            attr.setValueDesc("300");
        } else if (KiteStringUtils.equals("100000335", dataDisk)) {
            attr.setValue("450");
            attr.setValueDesc("450");
        } else if (KiteStringUtils.equals("100005837", dataDisk)) {
            attr.setValue("750");
            attr.setValueDesc("750");
        } else {
            attr.setValue("0");
            attr.setValueDesc("0");
        }

        super.def(attr, inst, data);
    }
}
